### Compilation failed:

error: 4: atomics are only permitted in workgroup variables and writable storage blocks
atomic_uint globalAtomic;         // invalid
^^^^^^^^^^^^^^^^^^^^^^^^
error: 5: atomics are only permitted in workgroup variables and writable storage blocks
atomicUint globalAtomicArray[2];  // invalid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: 20: atomics are only permitted in workgroup variables and writable storage blocks
S globalStructWithAtomicMember;              // invalid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: 21: atomics are only permitted in workgroup variables and writable storage blocks
S globalStructWithAtomicMemberArray[2];      // invalid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: 22: atomics are only permitted in workgroup variables and writable storage blocks
NestedS globalStructWithNestedAtomicMember;  // invalid
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: 31: variables of type 'ubo1' may not be uniform
layout(metal, binding = 1) uniform ubo1 {
                                   ^^^^
error: 32: caused by:
    atomicUint uboAtomic;                     // invalid
    ^^^^^^^^^^^^^^^^^^^^
error: 31: atomics are only permitted in workgroup variables and writable storage blocks
layout(metal, binding = 1) uniform ubo1 {
                                   ^^^^
error: 34: variables of type 'ubo2' may not be uniform
layout(metal, binding = 2) uniform ubo2 {
                                   ^^^^
error: 35: caused by:
    atomic_uint uboAtomicArray[2];            // invalid
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: 34: atomics are only permitted in workgroup variables and writable storage blocks
layout(metal, binding = 2) uniform ubo2 {
                                   ^^^^
error: 37: variables of type 'ubo3' may not be uniform
layout(metal, binding = 3) uniform ubo3 {
                                   ^^^^
error: 8: caused by:
    atomicUint structMemberAtomic;           // valid
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: 37: atomics are only permitted in workgroup variables and writable storage blocks
layout(metal, binding = 3) uniform ubo3 {
                                   ^^^^
error: 40: variables of type 'ubo4' may not be uniform
layout(metal, binding = 4) uniform ubo4 {
                                   ^^^^
error: 8: caused by:
    atomicUint structMemberAtomic;           // valid
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: 40: atomics are only permitted in workgroup variables and writable storage blocks
layout(metal, binding = 4) uniform ubo4 {
                                   ^^^^
error: 43: variables of type 'ubo5' may not be uniform
layout(metal, binding = 5) uniform ubo5 {
                                   ^^^^
error: 8: caused by:
    atomicUint structMemberAtomic;           // valid
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: 43: atomics are only permitted in workgroup variables and writable storage blocks
layout(metal, binding = 5) uniform ubo5 {
                                   ^^^^
error: 47: atomics are only permitted in workgroup variables and writable storage blocks
layout(metal, binding = 6) readonly buffer roSsbo1 {
                                           ^^^^^^^
error: 50: atomics are only permitted in workgroup variables and writable storage blocks
layout(metal, binding = 7) readonly buffer roSsbo2 {
                                           ^^^^^^^
error: 53: atomics are only permitted in workgroup variables and writable storage blocks
layout(metal, binding = 8) readonly buffer roSsbo3 {
                                           ^^^^^^^
error: 56: atomics are only permitted in workgroup variables and writable storage blocks
layout(metal, binding = 9) readonly buffer roSsbo4 {
                                           ^^^^^^^
error: 59: atomics are only permitted in workgroup variables and writable storage blocks
layout(metal, binding = 10) readonly buffer roSsbo5 {
                                            ^^^^^^^
error: 64: atomics are only permitted in workgroup variables and writable storage blocks
    atomicUint localAtomic;                 // invalid
    ^^^^^^^^^^^^^^^^^^^^^^
error: 65: atomics are only permitted in workgroup variables and writable storage blocks
    atomic_uint localAtomicArray[2];        // invalid
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: 66: atomics are only permitted in workgroup variables and writable storage blocks
    S localStructWithAtomicMember;          // invalid
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: 67: atomics are only permitted in workgroup variables and writable storage blocks
    S localStructWithAtomicMemberArray[2];  // invalid
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
29 errors
